package com.example.cvte.util;

import cn.hutool.core.util.IdUtil;
import cn.hutool.crypto.SecureUtil;
import org.springframework.util.StringUtils;

/**
 * @author 郝文雪
 * @date 2022/10/31 14:36
 * @Description Test
 */
public class PasswordUtil {
    /**
     * 加密方法
     * @param password 密码
     * @return
     */

    public static String encrypt(String password){
        //随机盐值
        String salt = IdUtil.simpleUUID();
        //密码(md5(随机盐值+密码))
        String finalPassword= SecureUtil.md5(salt+password);
        return salt+'$'+finalPassword;
    }

    /**
     * 解密方法
     * @param password 待比较的密码
     * @param securePassword
     * @return
     */
    public static boolean decrypt(String password,String securePassword){
        boolean result=false;
        if(StringUtils.hasLength(password) && StringUtils.hasLength(securePassword)){
            if(securePassword.length()==65 && securePassword.contains("$")) {
                String[] securePasswordArr = securePassword.split("\\$");
                String salt = securePasswordArr[0];//盐值
                String finalPassword = securePasswordArr[1];
                //使用同样的加密算法和随机盐值生成最终的加密的密码
                password = SecureUtil.md5(salt + password);
                if (password.equals(finalPassword)) {
                    result = true;
                }
            }
        }
        return result;

    }

    public static void main(String[] args) {
        String password="12345678";
        String dbPassword=PasswordUtil.encrypt(password);
        System.out.println("加密密码："+dbPassword);
        boolean sePassword=PasswordUtil.decrypt("123",dbPassword);
        System.out.println("对比结果1："+sePassword);
        boolean sePassword2=PasswordUtil.decrypt("12345678",dbPassword);
        System.out.println("对比结果2："+sePassword2);
    }
}
